﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Chilis.Marketing.Data.Access;
using Chilis.Marketing.Business.Entity;
using System.Data;

namespace Chilis.Marketing.Business.Logic
{
    public class BLCargo
    {
        #region ATRIBUTOS

        private DACargo cargoDA;

        #endregion

        #region CONSTRUCTOR

        public BLCargo()
        {
            this.cargoDA = new DACargo();
        }

        #endregion

        #region PROPIEDADES
        #endregion

        #region METODOS



        /// <summary>
        /// Método              : insertarCargo
        /// Descripción         : Inserta Cargo en la BD
        /// Fecha Creacion      : 20/03/2012
        /// Creador             : TP2
        /// Ultimo en modificar : TP2
        /// Ultima modificacion : 20/03/2012
        /// </summary>
        /// <param name="cargoBE">Entidad que representa el Cargo</param>
        /// <returns>Retorna un booleano que indica si se actualizo el registro</returns>
        public bool insertarCargo(BECargo cargoBE)
        {
            bool respuesta = true;
            try
            {
                cargoDA.Conexion();
                cargoDA.AbrirConexion();
                cargoDA.BeginTransaction();


                cargoBE.IdCargo = cargoDA.insertarCargo(cargoBE, true);
                if (cargoBE.IdCargo > 0)
                {
                    cargoDA.CommitTransaction();
                }
            }
            catch (Exception ex)
            {
                cargoDA.RollbackTransaction();

                throw ex;
            }
            finally
            {

                cargoDA.CerrarConexion();
            }
            return respuesta;
        }

        /// <summary>
        /// Método              : modificarCargo
        /// Descripción         : Modifica Cargo en la BD
        /// Fecha Creacion      : 20/03/2012
        /// Creador             : TP2
        /// Ultimo en modificar : TP2
        /// Ultima modificacion : 20/03/2012
        /// </summary>
        /// <param name="cargoBE">Entidad que representa el Cargo</param>
        /// <returns>Retorna un booleano que indica si se actualizo el registro</returns>
        public bool modificarCargo(BECargo cargoBE)
        {
            bool respuesta = true;
            try
            {
                cargoDA.Conexion();
                cargoDA.AbrirConexion();
                cargoDA.BeginTransaction();


                respuesta = cargoDA.modificarCargo(cargoBE, true);
                if (respuesta)
                {
                    cargoDA.CommitTransaction();
                }
            }
            catch (Exception ex)
            {
                cargoDA.RollbackTransaction();
                throw ex;
            }
            finally
            {

                cargoDA.CerrarConexion();
            }
            return respuesta;
        }


        /// <summary>
        /// Método              : obtenerCargoPorId
        /// Descripción         : Obtiene la Entidad Cargo
        /// Fecha Creacion      : 20/03/2012
        /// Creador             : TP2
        /// Ultimo en modificar : TP2
        /// Ultima modificacion : 20/03/2012
        /// </summary>
        /// <param name="idCargo">Id Cargo</param>
        /// <returns>Retorna el Objeto que representa la Entidad Cargo</returns>
        public BECargo obtenerCargoPorId(int idCargo)
        {
            return cargoDA.obtenerCargoPorId(idCargo);
        }


        /// <summary>
        /// Función             : buscarCargos
        /// Descripción         : Busca los Cargos de acuerdo a los filtros configurados
        /// Fecha Creacion      : 20/03/2012
        /// Creador             : TP2
        /// Ultimo en modificar : TP2
        /// Ultima modificacion : 20/03/2012
        /// </summary>
        /// <param name="filtro">Entidad que representa el Cargo</param>
        /// <returns>Listado de Cargos de acuerdo al filtro especificado</returns>
        public DataTable buscarCargos(BECargo filtro)
        {
            return cargoDA.buscarCargos(filtro);
        }

        #endregion
    }
}
